package com.robertux.leaderboard.beans;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Date;

import com.robertux.leaderboard.beans.entities.Usuario;

public class TotalProgresoUsuario {
	private Usuario usuario;
	private Date fecha;
	private int totalProgresos;
	private double progresoPromedio;
	private int totalPonderacion;

	public TotalProgresoUsuario(Usuario usr, Date fecha) {
		this.usuario = usr;
		this.fecha = fecha;
	}
	
	public TotalProgresoUsuario(Usuario usuario, Date fecha, double progresoPromedio, int totalPonderacion) {
		super();
		this.usuario = usuario;
		this.fecha = fecha;
		this.progresoPromedio = progresoPromedio;
		this.totalPonderacion = totalPonderacion;
	}
	
	public void addProgreso(double progreso, int ponderacion) {
		this.totalProgresos++;
		this.totalPonderacion += ponderacion;
		if(this.totalProgresos == 1) {
			this.progresoPromedio = progreso;
		} else {
			this.progresoPromedio += ((progreso - this.progresoPromedio) / this.totalProgresos);  //Cumulative moving average
		}
	}
	
	public Usuario getUsuario() {
		return usuario;
	}
	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}
	public double getProgresoPromedio() {
		return new BigDecimal(progresoPromedio).setScale(2, RoundingMode.HALF_UP).doubleValue();
	}
	public int getTotalPonderacion() {
		return totalPonderacion;
	}
	public int getTotalProgresos() {
		return totalProgresos;
	}
	public Date getFecha() {
		return fecha;
	}
	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}
}
